package edu.yuhf.collectiondemo;

import java.util.Comparator;
import java.util.Iterator;
import java.util.List;

//声明一个泛型类
public class ArrayListExample<T> {

    public void iterateOperation(final List<T> list){
        Iterator iterator = list.iterator();    //获取迭代子，java.lang.Iterable接口中定义的方法
        //hasNext()、next()方法都是java.util.Iterator接口中定义迭代必须的方法
        while(iterator.hasNext()){
            T value = (T)iterator.next();
            System.out.println(value);
        }
        //迭代子遍历是典型的内部遍历，遍历的过程是通过内部类（Itr）来实现的.。
    }

    public void streamForEachOperation(final List<T> list){
        list.stream().forEach(value->System.out.println(value));
        //流式迭代是外部迭代，是将集合的数据转化成另一种形式（流式），然后再迭代。
    }

    public void listCompare(final List<T> list){
        list.sort(new Comparator<T>() {
            public int compare(T value1, T value2) {
                if(value1.hashCode()>value2.hashCode()){
                    return 1;
                }else if(value1.hashCode()<value2.hashCode()){
                    return -1;
                }else{
                    return 0;
                }
            }
        });
        list.stream().forEach(System.out::println);
    }
}
